package top.xia17.plugins.fast.auth.register;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.HashMap;
import java.util.Map;

/**
 * 注册相关的配置
 * @author xia17
 */
@Data
@ConfigurationProperties("xia17fast.auth.register")
@SuppressWarnings("all")
public class RegisterProperties {

    /**
     * 是否开放注册
     */
    private Boolean open = false;

    /**
     * 支持的注册验证码发射器的种类,xia17fast自带两种方式 none , mail
     */
    private String[] supportRegisterCodeLauncher = {"none"};

    /**
     * 各种注册验证码发射器的属性
     */
    private Map<String, Map<String, String>> registerCodeLauncherProperties = new HashMap<>();

    /**
     * 注册时是否需要输入密码
     */
    private Boolean inputPass = true;

    /**
     * 配置密码生成器
     */
    private String passwordGenerator = "input";

    /**
     * 注册时的默认信息
     */
    private DefaultUserInfoProperties defaultUserInfo = new DefaultUserInfoProperties();

    /**
     * 是否开启发送次数限制
     */
    private Boolean sendCodeLimitEnabled = false;

    /**
     * 限制间隔时间 , 单位s
     */
    private Integer sendCodeLimitIntervalTime = 60;

    /**
     * 限制标志类型,IP或者TO
     * IP: 根据请求的IP来限制
     * TO: 根据发送的地址来限制
     */
    private String sendCodeLimitTagType = "TO";


    /**
     * 注册时默认的用户信息
     */
    @Data
    public static class DefaultUserInfoProperties {

        /**
         * 默认部门
         */
        private Long deptId;

        /**
         * 默认角色
         */
        private Long[] roleIds;

        /**
         * 默认头像
         */
        private String avatar;

        /**
         * 默认附加信息
         */
        private String extra = "{}";

        /**
         * 默认启用
         */
        private Boolean enabled = true;

        /**
         * 默认冻结
         */
        private Boolean isFreeze = false;

    }


}
